<?php

namespace console\controllers;

use services\common\ExcelExtendService;
use services\common\ExcelService;
use yii\console\Controller;
use api\modules\v1\controllers\ExcelController;
use yii\db\Exception;

class ExcelConController extends Controller
{
    // 导入每天的数据,更新每天的 白友挂号记录,治疗项目详情/治疗项目统计
//    public function actionIndex($hospital)
//    {
//       echo ExcelController::actionLoad($hospital);
//    }

    /**
     * php yii excel-con/add-user
     * 更新/添加用户  day = 1 当天 day = null 所有
     *
     * @param string $hospital  医院(项目简称)
     * @param null $day   开始日期【null所有时间 =1当天 =日期（endDay=null：则表示当前日期范围内 endDay存在：则表示开始日期）】
     * @param null $endDay 结束日期【day存在有效 2022-01-01】
     * @throws Exception
     */
    public function actionAddUser($hospital, $day = null, $endDay = null)
    {
        echo ExcelController::actionUpdateUser($hospital, $day, $endDay);
    }

    /**
     * 更新所有 白友挂号记录,治疗项目详情/治疗项目统计
     * @param $hospital 为医院(项目简称)
     */
    public function actionUpdateRecord($hospital)
    {
        echo ExcelController::actionUpdateRecord($hospital);
    }

    /**
     * 更新所有 白友挂号记录,治疗项目详情/治疗项目统计
     * excel-con/update-today-record
     * @param $hospital 为医院(项目简称)
     */
    public function actionUpdateTodayRecord($hospital)
    {
        echo ExcelController::actionUpdateTodayRecord($hospital);
    }

    /**
     * 更新当月挂号用户,消费不满足条件流失处理
     *
     * @param $hospital
     * @return void
     * @throws Exception
     */
    public static function actionFirstVisit($hospital)
    {
        // 当月消费达标,变成
        ExcelService::firstVisit($hospital);
        echo $hospital .'-' . date('Y-m-d H:i:s') . '-success'.PHP_EOL;
    }

    /**
     * @apiName  断诊/流失->复诊      * 当月有消费的流失/断诊复诊处理
     * @apiGroup
     * @apiParam {Number}
     * @apiParam {String}
     * @author loujie
     * @param $hospital
     * @throws Exception
     */
    public static function actionLoss($hospital)
    {
        // 本月存在消费,本月之前的断诊/流失都算复诊
        ExcelService::loss($hospital);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }

    /**
     * 上个月初诊->复诊
     *
     * @param $hospital
     * @return void
     * @throws Exception
     */
    public static function actionVisit($hospital)
    {
         ExcelService::visit($hospital);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }

    /**
     * 60天未来院,算断诊
     * @param $hospital
     * @return void
     * @throws Exception
     */
    public static function actionFaultDiagnosis($hospital)
    {
         ExcelService::faultDiagnosis($hospital);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }


    /**
     * 更新所有 白友挂号记录,治疗项目详情/治疗项目统计(按日期来)
     * @param $hospital 为医院(项目简称)
     * @param $startTime
     * @param $endTime
     * @param $type
     */
    public function actionUpdateTimeRecord($hospital,$startTime,$endTime,$type = 1)
    {
         ExcelService::updateTimeData($hospital,$startTime,$endTime,$type);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }

    /**
     * 根据诊室分配客服
     * @param $hospital
     */
    public function actionCustomerServer($hospital)
    {
        ExcelService::distributionCustomer($hospital);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }

    /**
     * 按指定日期重新分配,患者诊室和医助
     *
     * @param $hospital
     * @param $startTime
     * @param $endTime
     */
    public function actionResetAssistant($hospital,$startTime = null,$endTime = null)
    {
        ExcelService::lsRegistration($hospital,$startTime,$endTime);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }

    /**
     * 按指定日期重新分配,患者诊室和医助
     *
     * @param $hospital
     */
    public function actionUpdateClinic($hospital)
    {
        ExcelService::updateClinic($hospital);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }


    /**
     * reset-fault
     * 修复,到诊时间(最新时间替换老时间)
     * 所有断诊变成复诊
     * @param $hospital
     */
    public function actionResetFault($hospital)
    {
        ExcelService::repairRevisiting($hospital);
        ExcelService::resetFault($hospital);
        echo $hospital .'-'. date('Y-m-d H:i:s').'-success'.PHP_EOL;
    }

    // 根据where 查询
    public function actionWhereData($hospital,$type,$where)
    {
        return ExcelService::whereData($hospital,$type,$where);
    }

    /**
     *  白友数据同步报错提醒
     */
    public function actionLog()
    {
        return ExcelService::monitoring();
    }


    /**
     * 统计每天,奕远同步白友数据情况
     * @return bool
     */
    public function actionExcelTotal()
    {
        return ExcelService::excelTotal();
    }

    /**
     * 修复近30天的缺失数据
     * php yii excel-con/repair-history
     * @param $hospital
     * @return bool
     * @throws Exception
     */
    public function actionRepairHistory($hospital)
    {
        return ExcelService::repairHistory($hospital);
    }

    /**
     * @apiName 同步住院/出院记录
     * @author loujie
     * @param $hospital 医院名称
     * @param null $start_time 开始时间
     * @param null $end_time 结束时间
     */
    public function actionInHospitalSynchronous($hospital, $start_time = null, $end_time = null)
    {
        return ExcelExtendService::inHospitalSynchronous($hospital, $start_time, $end_time);
    }

    /**
     * @apiName 更新住院状态
     * @author loujie
     * @param $hospital
     */
    public function actionInHospitalStatus($hospital)
    {
        return ExcelExtendService::inHospitalStatus($hospital);
    }

    /**
     * @apiName 修复下次复诊时间
     * @author loujie
     */
    public function actionRevisitingRepair()
    {
        return ExcelExtendService::revisitingRepair();
    }

    /**
     * @apiName 修复五一之后,各家医院的到诊记录
     * @apiGroup
     * @author loujie
     * @param $hospital 医院名称
     * @return bool
     */
    public function actionToHospitalRepair($hospital)
    {
        return ExcelExtendService::toHospitalRepair($hospital);
    }

    /**
     * 根据最近一次的消费数据来自动更新患者的诊室，更新诊室后原有的医助归属人和客户归属人清空，按系统流程分配给新的医助或客服归属人
     * @return void
     */
    public function actionRepairClinic() {
        return ExcelExtendService::updateUserClinic();
    }

    /**
     * 同步1-5月医院数据
     * @param $hospital
     * @return bool
     * @throws Exception
     */
//    public function actionCardCheck($hospital)
//    {
//        //php yii excel-con/card-check cs
//        ExcelService::cardCheck($hospital,1);
//        ExcelService::cardCheck($hospital,2);
//        ExcelService::updateSerialNo($hospital);
//        ExcelController::actionUpdateUser($hospital);
//        return true;
//    }

      public function actionCity()
      {
          return ExcelExtendService::repairCity();
      }

      public function actionConsuption()
      {
          // 修复有诊室名的,诊室id
            ExcelExtendService::repairConsumptionClinic();
          // 修复没有诊室名的,诊室id
          return ExcelExtendService::repairConsumptionEmpty();
      }

      // 修复医助/客服归属人
      public function actionRepairBelongMember()
      {
          $startTime = time();
          echo "开始时间: {$startTime}".PHP_EOL;
          echo "重新分配医助归属人".PHP_EOL;
          ExcelExtendService::repairAssistantMemberId();
          echo "重新分配客服归属人".PHP_EOL;
          ExcelExtendService::repairBelongMemberId();
          $endTime = time();
          $diffTime = $endTime - $startTime;
          echo "success".PHP_EOL;
          echo "结束时间: {$endTime}".PHP_EOL;
          echo "本次耗时: {$diffTime}".PHP_EOL;
      }

    // 修复流失数据
    public function actionRepairLoss()
    {
        $startTime = time();
        echo "开始时间: {$startTime}".PHP_EOL;
        ExcelExtendService::repairLoss();
        echo "重新分配客服归属人".PHP_EOL;
        $endTime = time();
        $diffTime = $endTime - $startTime;
        echo "success".PHP_EOL;
        echo "结束时间: {$endTime}".PHP_EOL;
        echo "本次耗时: {$diffTime}".PHP_EOL;
    }

    /**
     *
     *excel-con/send-image-messge 没有上传图片的,诊室提醒
     * @return void
     */
    public function actionSendImageMessage()
    {
        $startTime = time();
        echo "开始时间: {$startTime}".PHP_EOL;
        ExcelExtendService::sendImageMessage();
        $endTime = time();
        $diffTime = $endTime - $startTime;
        echo "success".PHP_EOL;
        echo "结束时间: {$endTime}".PHP_EOL;
        echo "本次耗时: {$diffTime}".PHP_EOL;
    }

    /**
     *
     *excel-con/repair-work-address 没有上传图片的,诊室提醒
     * @return void
     */
    public function actionRepairWorkAddress($prject_id =0)
    {

        $startTime = time();
        echo "开始时间: {$startTime}".PHP_EOL;
        ExcelExtendService::repairWorkCity($prject_id);
        $endTime = time();
        $diffTime = $endTime - $startTime;
        echo "success".PHP_EOL;
        echo "结束时间: {$endTime}".PHP_EOL;
        echo "本次耗时: {$diffTime}".PHP_EOL;
    }

}
